﻿using Sinacor.Servico.Bovespa.Corretagem.Service.ServiceContract;
using System;
using System.ServiceModel;
using Sinacor.Infra.Service.Security.Services;
using System.Collections.Generic;

namespace Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation
{
    /// <summary>
    /// Implementação do contrato de serviço para controle de beneficio de politica de 
    /// corretagem
    /// </summary>
    [SinacorServiceBehavior]
    public class ControleBeneficio : IControleBeneficio
    {
        #region Atributos

        Translator.DataContractToBusinessEntity.ControleBeneficio _translatorDCToBE = null;
        Translator.BusinessEntityToDataContract.ControleBeneficio _translatorBEToDC = null;

        #endregion

        #region Construtor

        /// <summary>
        /// Construtor ControleBeneficio
        /// </summary>
        public ControleBeneficio() 
        {
            this._translatorDCToBE = new Translator.DataContractToBusinessEntity.ControleBeneficio();
            this._translatorBEToDC = new Translator.BusinessEntityToDataContract.ControleBeneficio();
        }

        #endregion

        #region Métodos
        /// <summary>
        /// Consulta lista de controles de beneficios de politicas de corretagem conforme
        /// filtro.
        /// </summary>
        /// <tables>
        /// TBOCORR_BENEF, TBOCORR_TIPO_BENEF
        /// </tables>
        /// <param name="request"></param>
        public List<DataContract.Response.ControleBeneficioResponse> ConsultarControlesBeneficios(DataContract.Request.FiltroControleBeneficioRequest request)
        {
            return this._translatorBEToDC.ToControleBeneficioResponse
                (
                    new BusinessLogic.ControleBeneficio().ConsultarControlesBeneficios
                    (
                        this._translatorDCToBE.ToFiltroControleBeneficio(request)
                    )
                );
        }

        /// <summary>
        /// Exclui um controle de benefício de politica de corretagem.
        /// </summary>
        /// <tables>
        /// TBOCORR_BENEF, TBOCORR_TIPO_BENEF
        /// </tables>
        /// <param name="request"></param>
        public void ExcluirControleBeneficio(DataContract.Request.FiltroControleBeneficioChaveRequest request)
        {
            new BusinessLogic.ControleBeneficio().ExcluirControleBeneficio
                (
                    this._translatorDCToBE.ToFiltroControleBeneficioChave(request)
                );
        }

        /// <summary>
        /// Inclui um controle de benefício de politica de corretagem
        /// </summary>
        /// <tables>
        /// TBOCORR_TIPO_BENEF
        /// </tables>
        /// <param name="request"></param>
        public void IncluirControleBeneficio(DataContract.Request.ControleBeneficioRequest request)
        {
            new BusinessLogic.ControleBeneficio().IncluirControleBeneficio
                (
                    this._translatorDCToBE.ToControleBeneficio(request)
                );
        }

        #endregion
    }
}